home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 16 / CU Amiga Magazine's Super CD-ROM 16 (1997-10-16)(EMAP Images)(GB)[!][issue 1997-11].iso / CUCD / Online / HBBS / Source / Common / Shared.c < prev    next >
Text File  |  1997-08-22  |  11KB  |  257 lines

  1.  
  2. void ClearNodeData(struct NodeSettingsData *NS) // different to InitNodeData() in Control_Main.c
  3. {
  4.   // small subroutine to set all the default values
  5.   // never call if you've allocated mem for strings!
  6.   NS->SysopAccount=NULL;
  7.   NS->NodeName=NULL;
  8.   NS->NodePhone=NULL;
  9.   NS->NodeConnectScript=NULL;
  10.  
  11.   NS->AskUserPW=FALSE;
  12.  
  13.   NS->UseSysPW=FALSE;
  14.   NS->SysPW=NULL;
  15.   NS->SysPWScript=NULL;
  16.   NS->SysPWPrompt=NULL;
  17.  
  18.   NS->UseNodePW=FALSE;
  19.   NS->NodePW=NULL;
  20.   NS->NodePWScript=NULL;
  21.   NS->NodePWPrompt=NULL;
  22.  
  23.   NS->UserNamePrompt=NULL;
  24.   NS->UserPWPrompt=NULL;
  25.  
  26.   NS->NodeLogFile=NULL;
  27.   NS->ModemLogFile=NULL;
  28.   NS->CallersLogFile=NULL;
  29.   NS->UploadLog=FALSE;
  30.   NS->DownloadLog=FALSE;
  31.   NS->DoorLogFile=NULL;
  32.   NS->DoorLog=FALSE;
  33.  
  34.   NS->ChatFlag=FALSE;
  35.   NS->Iconified=FALSE;
  36.   NS->UseOwnScreen=FALSE;
  37.   NS->StartScreen=FALSE;
  38.   NS->AccessRequired=0;
  39.   NS->ScrModeID=0;
  40.   NS->ScrWidth=0;
  41.   NS->ScrHeight=0;
  42.   NS->ScrDepth=0;
  43.   NS->UseDevice=FALSE;
  44.   NS->AllowNewUsers=FALSE;
  45.  
  46.   NS->NodePlayPen=NULL;
  47.   NS->MaxDIZLines=0;
  48.  
  49.   NS->InactivityDisconnectOverride=FALSE;
  50.   NS->InactivitySeconds=0;
  51. }
  52.  
  53. void SetNodeSettingsDefaults(struct NodeSettingsData *NS) // different to InitNodeData() in Control_Main.c
  54. {
  55.   // small subroutine to set all the default values
  56.  
  57.   FreeAndSet(&NS->SysPW,"PASSWORD");
  58.   FreeAndSet(&NS->SysPWPrompt,"System PW:");
  59.   FreeAndSet(&NS->NodePW,"PASSWORD");
  60.   FreeAndSet(&NS->NodePWPrompt,"Node PW:");
  61.   FreeAndSet(&NS->UserNamePrompt,"Username:");
  62.   FreeAndSet(&NS->UserPWPrompt,"Password:");
  63.   NS->AskUserPW=TRUE;
  64.   NS->UploadLog=TRUE;
  65.   NS->DownloadLog=TRUE;
  66.   NS->ChatFlag=TRUE;
  67.   NS->UseOwnScreen=TRUE;
  68.   NS->AccessRequired=0;
  69.   NS->UseDevice=FALSE;
  70.   NS->ScrModeID=BBSGlobal->ScreenInfo.ScrModeID;
  71.   NS->ScrWidth= BBSGlobal->ScreenInfo.ScrWidth;
  72.   NS->ScrHeight=BBSGlobal->ScreenInfo.ScrHeight;
  73.   NS->ScrDepth=BBSGlobal->ScreenInfo.ScrDepth;
  74.   NS->AllowNewUsers=TRUE;
  75.   NS->MaxDIZLines=12;
  76.   NS->InactivitySeconds=120; // 2 mins.
  77. }
  78.  
  79.  
  80. void CopyNodeSettings(struct NodeSettingsData *dest,struct NodeSettingsData *source)
  81. {
  82.   FreeAndSet(&dest->SysopAccount      ,source->SysopAccount);
  83.   FreeAndSet(&dest->NodeName          ,source->NodeName);
  84.   FreeAndSet(&dest->NodePhone         ,source->NodePhone);
  85.   FreeAndSet(&dest->NodeConnectScript ,source->NodeConnectScript);
  86.  
  87.               dest->AskUserPW         =source->AskUserPW;
  88.  
  89.               dest->UseSysPW          =source->UseSysPW;
  90.   FreeAndSet(&dest->SysPW             ,source->SysPW);
  91.   FreeAndSet(&dest->SysPWScript       ,source->SysPWScript);
  92.   FreeAndSet(&dest->SysPWPrompt       ,source->SysPWPrompt);
  93.  
  94.               dest->UseNodePW         =source->UseNodePW;
  95.   FreeAndSet(&dest->NodePW            ,source->NodePW);
  96.   FreeAndSet(&dest->NodePWScript      ,source->NodePWScript);
  97.   FreeAndSet(&dest->NodePWPrompt      ,source->NodePWPrompt);
  98.  
  99.   FreeAndSet(&dest->UserNamePrompt    ,source->UserNamePrompt);
  100.   FreeAndSet(&dest->UserPWPrompt      ,source->UserPWPrompt);
  101.  
  102.   FreeAndSet(&dest->NodeLogFile       ,source->NodeLogFile);
  103.   FreeAndSet(&dest->ModemLogFile      ,source->ModemLogFile);
  104.   FreeAndSet(&dest->CallersLogFile    ,source->CallersLogFile);
  105.   FreeAndSet(&dest->DoorLogFile       ,source->DoorLogFile);
  106.               dest->DoorLog           =source->DoorLog;
  107.               dest->UploadLog         =source->UploadLog;
  108.               dest->DownloadLog       =source->DownloadLog;
  109.  
  110.               dest->ChatFlag          =source->ChatFlag;
  111.               dest->Iconified         =source->Iconified;
  112.               dest->UseOwnScreen      =source->UseOwnScreen;
  113.               dest->StartScreen       =source->StartScreen;
  114.               dest->AccessRequired    =source->AccessRequired;
  115.  
  116.               dest->ScrModeID         =source->ScrModeID;
  117.               dest->ScrWidth          =source->ScrWidth;
  118.               dest->ScrHeight         =source->ScrHeight;
  119.               dest->ScrDepth          =source->ScrDepth;
  120.  
  121.               dest->UseDevice         =source->UseDevice;
  122.               dest->AllowNewUsers     =source->AllowNewUsers;
  123.   FreeAndSet(&dest->NodePlayPen       ,source->NodePlayPen);
  124.               dest->MaxDIZLines       =source->MaxDIZLines;
  125.               dest->InactivitySeconds =source->InactivitySeconds;
  126.               dest->InactivityDisconnectOverride =source->InactivityDisconnectOverride;
  127.  
  128. }
  129.  
  130. void FreeNodeSettingsData(struct NodeSettingsData *NS) // different to InitNodeData() in Control_Main.c
  131. {
  132.   FreeStr(NS->SysopAccount);
  133.   FreeStr(NS->NodeName);
  134.   FreeStr(NS->NodePhone);
  135.   FreeStr(NS->NodeConnectScript);
  136.  
  137.   FreeStr(NS->SysPW);
  138.   FreeStr(NS->SysPWScript);
  139.   FreeStr(NS->SysPWPrompt);
  140.  
  141.   FreeStr(NS->NodePW);
  142.   FreeStr(NS->NodePWScript);
  143.   FreeStr(NS->NodePWPrompt);
  144.  
  145.   FreeStr(NS->UserNamePrompt);
  146.   FreeStr(NS->UserPWPrompt);
  147.  
  148.   FreeStr(NS->NodeLogFile);
  149.   FreeStr(NS->ModemLogFile);
  150.   FreeStr(NS->CallersLogFile);
  151.   FreeStr(NS->DoorLogFile);
  152.   FreeStr(NS->NodePlayPen);
  153. }
  154.  
  155.  
  156. V_ERROR LoadNodeSettingsData(ULONG NodeNum,struct NodeSettingsData *NS )
  157. {
  158.   struct CfgFileData *NodeCFG;
  159.   V_ERROR error=TYPE_NONE;
  160.   UBYTE *filename=NULL;
  161.   struct NodeData *ND;
  162.   UBYTE ecode=0;
  163.  
  164.   if (NodeNum==NODE_GLOBAL) // as opposed to a valid nodenumber... hmm, does this mean we are limited to ULONG nodes ? :-))))))
  165.   {
  166.     // only clear for global
  167.     ClearNodeData(NS);
  168.     SetNodeSettingsDefaults(NS);
  169.     filename=FILE_NODEGLOBAL;
  170.   }
  171.   else
  172.   {
  173.     if (ND=(struct NodeData*)GetNode(BBSGlobal->NodeList,NodeNum))
  174.     {
  175.       // erk, i can't belive i did this...                vvvvvvvvvvvvvvvvvvvvvvvvv
  176.       if (filename=AllocVec(strlen(ND->NodeLocation)+30/*strlen(FILENAME_NODELOCAL)+1*/,MEMF_PUBLIC))
  177.       {
  178.         strcpy(filename,ND->NodeLocation);
  179.         strcat(filename,FILENAME_NODELOCAL);
  180.       }
  181.     }
  182.   }
  183.  
  184.   if (filename)
  185.   {
  186.     if (NodeCFG=HBBS_LoadConfig(filename,LCFG_NONE))
  187.     {
  188.       // get settings!
  189.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->SysopAccount     ,VTYPE_STRING,OPT_NODE_SysopAccount,OPT_SINGLE) && NodeNum==NODE_GLOBAL) ecode=1; // *C* document required presence in NodeGlobal
  190.  
  191.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->NodeName         ,VTYPE_STRING,OPT_NODE_NodeName,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=2;
  192.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->NodePhone        ,VTYPE_STRING,OPT_NODE_NodePhone,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=3;
  193.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->NodeConnectScript,VTYPE_STRING,OPT_NODE_NodeConnectScript,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=4;
  194.  
  195.       HBBS_GetSetting(NodeCFG,(void *)&NS->AskUserPW             ,VTYPE_BOOL,OPT_NODE_AskUserPW ,OPT_SINGLE);
  196.  
  197.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->UseSysPW         ,VTYPE_BOOL,OPT_NODE_UseSysPW ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=5;
  198.       HBBS_GetSetting(NodeCFG,(void *)&NS->SysPW                 ,VTYPE_STRING,OPT_NODE_SysPW,OPT_SINGLE);
  199.       HBBS_GetSetting(NodeCFG,(void *)&NS->SysPWScript           ,VTYPE_STRING,OPT_NODE_SysPWScript,OPT_SINGLE);
  200.       HBBS_GetSetting(NodeCFG,(void *)&NS->SysPWPrompt           ,VTYPE_STRING,OPT_NODE_SysPWPrompt ,OPT_SINGLE);
  201.  
  202.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->UseNodePW        ,VTYPE_BOOL,OPT_NODE_UseNodePW ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=6;
  203.       HBBS_GetSetting(NodeCFG,(void *)&NS->NodePW                ,VTYPE_STRING,OPT_NODE_NodePW,OPT_SINGLE);
  204.       HBBS_GetSetting(NodeCFG,(void *)&NS->NodePWScript          ,VTYPE_STRING,OPT_NODE_NodePWScript,OPT_SINGLE);
  205.       HBBS_GetSetting(NodeCFG,(void *)&NS->NodePWPrompt          ,VTYPE_STRING,OPT_NODE_NodePWPrompt ,OPT_SINGLE);
  206.  
  207.       HBBS_GetSetting(NodeCFG,(void *)&NS->UserNamePrompt        ,VTYPE_STRING,OPT_NODE_UserNamePrompt ,OPT_SINGLE);
  208.       HBBS_GetSetting(NodeCFG,(void *)&NS->UserPWPrompt          ,VTYPE_STRING,OPT_NODE_UserPWPrompt ,OPT_SINGLE);
  209.  
  210.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->NodeLogFile      ,VTYPE_STRING,OPT_NODE_NodeLogFile,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=7;
  211.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->ModemLogFile     ,VTYPE_STRING,OPT_NODE_ModemLogFile ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=8;
  212.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->CallersLogFile   ,VTYPE_STRING,OPT_NODE_CallersLogFile ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=9;
  213.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->DoorLogFile      ,VTYPE_STRING,OPT_NODE_DoorLogFile ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=10;
  214.  
  215.       HBBS_GetSetting(NodeCFG,(void *)&NS->DoorLog          ,VTYPE_BOOL,OPT_NODE_DoorLog ,OPT_SINGLE);
  216.  
  217.       HBBS_GetSetting(NodeCFG,(void *)&NS->UploadLog        ,VTYPE_BOOL,OPT_NODE_UploadLog ,OPT_SINGLE);
  218.       HBBS_GetSetting(NodeCFG,(void *)&NS->DownloadLog      ,VTYPE_BOOL,OPT_NODE_DownloadLog ,OPT_SINGLE);
  219.  
  220.       HBBS_GetSetting(NodeCFG,(void *)&NS->ChatFlag         ,VTYPE_BOOL,OPT_NODE_ChatFlag ,OPT_SINGLE);
  221.       HBBS_GetSetting(NodeCFG,(void *)&NS->Iconified        ,VTYPE_BOOL,OPT_NODE_Iconified ,OPT_SINGLE);
  222.       HBBS_GetSetting(NodeCFG,(void *)&NS->UseOwnScreen     ,VTYPE_BOOL,OPT_NODE_UseOwnScreen ,OPT_SINGLE);
  223.       HBBS_GetSetting(NodeCFG,(void *)&NS->StartScreen      ,VTYPE_BOOL,OPT_NODE_StartScreen ,OPT_SINGLE);
  224.  
  225.       HBBS_GetSetting(NodeCFG,(void *)&NS->AccessRequired   ,VTYPE_SMALLNUM,OPT_NODE_AccessRequired,OPT_SINGLE);
  226.  
  227.       HBBS_GetSetting(NodeCFG,(void *)&NS->ScrModeID        ,VTYPE_BIGNUM,OPT_NODE_ScrModeID,OPT_SINGLE);
  228.       HBBS_GetSetting(NodeCFG,(void *)&NS->ScrHeight        ,VTYPE_BIGNUM,OPT_NODE_ScrHeight,OPT_SINGLE);
  229.       HBBS_GetSetting(NodeCFG,(void *)&NS->ScrWidth         ,VTYPE_BIGNUM,OPT_NODE_ScrWidth,OPT_SINGLE);
  230.       HBBS_GetSetting(NodeCFG,(void *)&NS->ScrDepth         ,VTYPE_BIGNUM,OPT_NODE_ScrDepth,OPT_SINGLE);
  231.  
  232.       HBBS_GetSetting(NodeCFG,(void *)&NS->UseDevice        ,VTYPE_BOOL,OPT_NODE_UseDevice ,OPT_SINGLE);
  233.       HBBS_GetSetting(NodeCFG,(void *)&NS->AllowNewUsers    ,VTYPE_BOOL,OPT_NODE_AllowNewUsers ,OPT_SINGLE);
  234.  
  235.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->NodePlayPen ,VTYPE_PATH,OPT_NODE_NodePlayPen ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=11;
  236.       HBBS_GetSetting(NodeCFG,(void *)&NS->MaxDIZLines      ,VTYPE_SMALLNUM,OPT_NODE_MaxDIZLines ,OPT_SINGLE);
  237.  
  238.       HBBS_GetSetting(NodeCFG,(void *)&NS->InactivityDisconnectOverride,VTYPE_BOOL,OPT_NODE_InactivityDisconnectOverride,OPT_SINGLE);
  239.       HBBS_GetSetting(NodeCFG,(void *)&NS->InactivitySeconds,VTYPE_BIGNUM,OPT_NODE_InactivitySeconds ,OPT_SINGLE);
  240.  
  241.  
  242.       HBBS_FlushConfig(NodeCFG);
  243.     }
  244.  
  245.     if (ecode)
  246.     {
  247.       HBBS_DoErrorMessage(EMSG_NODESETTINGS+ecode-1,NodeNum,filename);
  248.       error=TYPE_FATAL;
  249.     }
  250.  
  251.     if (NodeNum!=NODE_GLOBAL) FreeVec(filename);
  252.   }
  253.  
  254.   return(error);
  255. }
  256.  
  257.